<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var num = 10;
        var num1 = num;
        num1 = 100;
        console.log(num);  // 10
        console.log(num1); // 100

        // 基本数据类型是存储在栈中的，赋值给变量的是 值
        
        // 复杂数据类型是存储在堆中的，赋值给变量的是 一个地址
        // 复杂数据类型的复制是将地址复制给新变量，于是两个变量操作数据时是同一个数据
        // var arr = [11,22,33,44];
        // var arr1 = arr;
        // arr[0] = '666';
        // console.log(arr1); //['666',22,33,44];
        // console.log(arr);  //['6 66',22,33,44];
        var arr = [11,22,33,44];
        var arr2=[];
        for(var i = 0; i< arr.length;i++){
            arr2.push(arr[i]);
        }
        arr2[0] = '000';
        console.log(arr2); //  (4) ['000', 22, 33, 44]
        console.log(arr);  // (4) [11, 22, 33, 44]

        var obj = {
            name:'neinei',
            age:16,
        }
        // var obj2 = {};
        // for(var key in obj){
        //     obj2[key] = obj[key]
        // }
        // obj2.name = "nana";
        // console.log(obj2);
        // console.log(obj);

        // var obj2 = Object.assign({},obj);
        //  obj2.name = "nana";
        // console.log(obj2); // {name: 'nana', age: 16}
        // console.log(obj);  // {name: 'neinei', age: 16}

        // Object.assign({},obj1,obj2,...)
        // var obj2 = Object.assign({},obj);
        //  obj2.name = "nana";
        // console.log(obj2);
        // console.log(obj);

        var data =[{
            title:'标题一',
            list:['a','b','c'],
            author:{
                name:'勇敢'
            }},{
            title:'标题二',
            list:['a','b','c'],
            author:{
                name:'牛牛'
        }
    }]
    
    // 将数据转换json字符串, JSON.stringify() 方法将 JavaScript 对象转换为字符串。
    // JSON.stringify(value[, replacer[, space]])
    var str = JSON.stringify(data);
        console.log(str);
        // 将数据转换成json对象   json对象与对象的使用是一样的 区别是看起来json对象的属性名也是字符串 
        var data3 = JSON.parse(str);
        console.log(data3);

    // 浅拷贝只复制指向某个对象的指针，而不复制对象本身，新旧对象还是共享同一块内存。 
    // 但深拷贝会另外创造一个一模一样的对象，新对象跟原对象不共享内存，修改新对象不会改到原对象。

    // var data2 = [];
        // for(var i = 0;i< data.length;i++){
        //     // data2.push(data[i]);
        //     var o = {};
        //     for(var key in data[i]){
        //         // key  title  list  author
        //         // o[key] = data[i][key];
        //         // console.log(typeof data[i][key]);
        //         if(typeof data[i][key] === "object"){
        //             var xin = data[i][key] instanceof Array ? [] : {};
        //             for(var key1 in data[i][key]){
        //                 xin[key1] = data[i][key][key1]
        //             }
        //             o[key] = xin;
        //         }else{
        //             o[key] = data[i][key];
        //         }

        //     }
        //     data2.push(o);
        // }
        // data2[0].title = "哎哎哎"
        // console.log(data2);
        // console.log(data);

        // data2[0].list[0] = "啊啊啊"
        // console.log(data2);
        // console.log(data);

    </script>
</body>
</html>  